It's been a while, but I wondered how you kept the internal framework headers private? I had a go at doing this briefly and everything in the 'internal' framework was public to both the 'public' framework and whatever was relying on that 'public' framework (e.g. an app)